package com.lj.infoisland.util;

import com.lj.infoisland.common.convention.exception.ClientException;

/*
 * @description 断言工具类
 * @author 龙洁
 * @create 2024-10-22 下午2:29
 */
public class AssertUtil {
    /**
     * 判断用户名是否为空
     *
     * @param username 用户名
     */
    public static boolean isUserNameNull(String username) {
        if (username == null) {
            throw new ClientException("用户名不能为空");
        }
        return true;
    }

    /**
     * 校验登录密码是否符合要求
     *
     * @param password 待校验的密码
     * @return 如果密码符合要求返回true，否则返回false
     */
    public static boolean validatePassword(String password) {
        // 检查密码长度是否在8到20位之间
        if (password.length() < 8 || password.length() > 20) {
            throw new ClientException("密码长度需要在8到20位之间");
        }

        // 检查密码是否包含至少一个数字
        boolean containsDigit = password.matches(".*\\d.*");
        // 检查密码是否包含至少一个字母
        boolean containsLetter = password.matches(".*[a-zA-Z].*");
        if (!containsLetter && !containsDigit) {
            throw new ClientException("密码至少需要包含一个数字和字母");
        }

        // 如果所有检查都通过，则密码有效
        return true;
    }

    /**
     * 校验注册密码是否符合要求
     *
     * @param password 待校验的密码
     * @return 如果密码符合要求返回true，否则返回false
     */
    public static boolean validatePassword2(String password, String confirmPassword) {
        // 通过validatePassword进行判断密码是否合格
        boolean passwordIsTure = validatePassword(password);
        boolean confirmPasswordIsTure = validatePassword(confirmPassword);
        //如果两个密码不一致的话
        if (!password.equals(confirmPassword)) {
            throw new ClientException("两次密码不一致");
        }
        // 如果所有检查都通过，则密码有效
        return true;
    }
}
